Fix quoted local file name parts in Tramp
authorMichael Albinus <michael.albinus@gmx.de>
Sat, 3 May 2025 13:00:18 +0000 (15:00 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Sat, 3 May 2025 13:00:18 +0000 (15:00 +0200)
* lisp/net/tramp.el (tramp-handle-directory-file-name):
* lisp/net/tramp-integration.el (tramp-rfn-eshadow-update-overlay):
Handle quoted local file name part.

lisp/net/tramp-integration.el
lisp/net/tramp.el

index 552d52835e956907bc535ae8aa4e8e0a0c77726c..6df9b17cdc345cd4a6c9d457448c613115b02733 100644 (file)
@@ -59,8 +59,9 @@
 
 ;;; Fontification of `read-file-name':
 
-(defvar tramp-rfn-eshadow-overlay)
-(make-variable-buffer-local 'tramp-rfn-eshadow-overlay)
+;; An overlay covering the shadowed part of the filename (local to the
+;; minibuffer).
+(defvar-local tramp-rfn-eshadow-overlay nil)
 
 (defun tramp-rfn-eshadow-setup-minibuffer ()
   "Set up a minibuffer for `file-name-shadow-mode'.
@@ -104,7 +105,8 @@ been set up by `rfn-eshadow-setup-minibuffer'."
                   (minibuffer-prompt-end)))
          ;; We do not want to send any remote command.
          (non-essential t))
-      (when (tramp-tramp-file-p (buffer-substring end (point-max)))
+      (when (and (tramp-tramp-file-p (buffer-substring end (point-max)))
+                (not (file-name-quoted-p (buffer-substring end (point-max)))))
        (save-excursion
          (save-restriction
            (narrow-to-region
index 6c1a4ae7127be322d733ae1ab066677a15593d10..e0e080021c77832209c0cb1451d95044087b0238 100644 (file)
@@ -4076,6 +4076,7 @@ Let-bind it when necessary.")
   ;; Otherwise, remove any trailing slash from localname component.
   ;; Method, host, etc, are unchanged.
   (while (with-parsed-tramp-file-name directory nil
+          (setq localname (file-name-unquote localname))
           (and (tramp-compat-length> localname 0)
                (eq (aref localname (1- (length localname))) ?/)
                (not (string= localname "/"))))
@@ -4164,8 +4165,8 @@ Let-bind it when necessary.")
     (eq (file-attribute-type (file-attributes (file-truename filename))) t)))
 
 (defun tramp-handle-file-equal-p (filename1 filename2)
-  "Like `file-equalp-p' for Tramp files."
-  ;; Native `file-equalp-p' calls `file-truename', which requires a
+  "Like `file-equal-p' for Tramp files."
+  ;; Native `file-equal-p' calls `file-truename', which requires a
   ;; remote connection.  This can be avoided, if FILENAME1 and
   ;; FILENAME2 are not located on the same remote host.
   (when (tramp-equal-remote